package domainmodel;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;

public class KaartSpel {
    private ArrayList<Kaart> kaarten = new ArrayList<Kaart>();
	
    public KaartSpel(){
        setUp();
    }

    private void setUp(){
        for(int i = 1; i < 14; i++){
            kaarten.add(new Kaart("Harten", i));
            kaarten.add(new Kaart("Ruiten", i));
            kaarten.add(new Kaart("Klaveren", i));
            kaarten.add(new Kaart("Schoppen", i));
        }
    }
    
    public void addKaart(Kaart kaart){
        kaarten.add(kaart);
    }

    public int getAantalKaarten(){
    	 return kaarten.size();
    }

    public Kaart getKaart(){
    	Random random = new Random();
        int getal = random.nextInt(getAantalKaarten());
    	return kaarten.get(getal);
    }

    public Kaart getKaart(int positie) throws IllegalArgumentException{
    	try{
            return kaarten.get(positie);
    	}catch (IndexOutOfBoundsException e){
            throw new IllegalArgumentException("De positie kan niet groter zijn dan het aantal kaarten in het dek (52)");
    	}
    }

    public Kaart getKaart(String type, int nummer) throws IllegalArgumentException  {
        for(Kaart kaart : kaarten){
            if (kaart.equals(new Kaart(type,nummer))){
                return kaart;
            }
        }
        return null;
    }

    public boolean isGesorteerd(){
        ArrayList<Kaart> k = new ArrayList<Kaart>();
    	k = kaarten;
    	Collections.sort(k, null);
    	if (kaarten.equals(k)){
            return true;
    	}	
    	return false;
    }

    public void schud(){
    	Collections.shuffle(kaarten);
    }

    public void sorteer(){
    	Collections.sort(kaarten, null);
    }
    
    public String toString(){
    	String uitvoer = "";
    	for(Kaart kaart : kaarten){
    		uitvoer = uitvoer + kaart.toString() + "\n";
    	}
    	return uitvoer;
    }

}
